#include "stdio.h"
#include "main.h"

int init_queue(Queue ** q){
    *q = (Queue *) malloc(sizeof(Queue));
    Queue *null = NULL;
    if (*q == null){
        return 1;
    }
    (*q)->size = 0;
    return 0;
}

int enqueue (Queue * q, int value){
    if(q->size >= QUEUE_MAX_SIZE){
        return 1;
    }
    q->elements[q->size] = value;
    q->size++;
    return 0;
}

int dequeue(Queue * q, int *value){
    if(q->size == 0){
        return 1;
    }
    *value = q->elements[0];
    for (int i = 1; i < q->size; i++) {
        q->elements[i - 1] = q->elements[i];
    }
    q->size--;
    return 0;
}

int first(Queue * q, int * value){
    if(q->size == 0){
        return 1;
    }
    *value = q->elements[0];
    return 0;
}

int is_empty(Queue * q){
    if(q->size == 0){
        return 0;
    }
    return 1;
}

int size(Queue * q){
    return q->size;
}